/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.trandio.dao;

import org.trandio.model.PlanoANVO;
import org.trandio.model.PlanoAHVO;
import org.trandio.model.PlanoAUVO;
import org.trandio.model.DetalleFacturaVO;
import org.trandio.model.CabRipVO;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.NamingException;
import org.trandio.util.ConexionDb;

/**
 *
 * @author root
 */
public class RipsDAO implements RipsInterfase {

    @Override
    public List<DetalleFacturaVO> getDetallesFactura(int idfactura) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<DetalleFacturaVO> listDetalleFactura = new ArrayList<DetalleFacturaVO>();

        String condicion = "";


        String sql = "SELECT tb_actividad.codigo, "
                + "tb_tiporegistro.codigo tr,"
                + "tb_actividad.descripcion,"
                + "tb_factura.fecha,"
                + "tb_factura.numero,"
                + "tb_sede.codigo_prestador cod_prestador,"
                + "tb_detalle_factura.valor_unitario,"
                + "tb_detalle_factura.id,"
                + "tb_detalle_factura.id_factura,"
                + "tb_detalle_factura.cantidad,"
                + "tb_detalle_factura.valor_copago,"
                + "tb_detalle_factura.valor_subsidio,"
                + "tb_detalle_factura.valor_total "
                + "FROM tb_detalle_factura "
                + "INNER JOIN tb_actividad ON (tb_detalle_factura.id_actividad = tb_actividad.id) "
                + "INNER JOIN tb_tiporegistro ON (tb_actividad.id_tipo_registro = tb_tiporegistro.id) "
                + "INNER JOIN tb_factura ON (tb_detalle_factura.id_factura = tb_factura.id) "
                + " INNER join tb_sede on (tb_factura.id_sede = tb_sede.id) "
                + " INNER join tb_prestador on (tb_prestador.id = tb_sede.id_prestador) "
                + " WHERE tb_detalle_factura.id_factura=" + idfactura;

        System.out.println("Sql buscar DETALLES FACT: " + sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {

                    DetalleFacturaVO detalleFacturaVO = new DetalleFacturaVO();

                    detalleFacturaVO.setCodigo(res.getString("codigo"));
                    detalleFacturaVO.setDescripcion(res.getString("descripcion"));
                    detalleFacturaVO.setTarifa(res.getFloat("valor_unitario"));
                    detalleFacturaVO.setVrunitario(res.getFloat("valor_unitario"));
                    detalleFacturaVO.setVrpaciente(res.getFloat("valor_copago"));
                    detalleFacturaVO.setVraseguradora(res.getFloat("valor_subsidio"));
                    detalleFacturaVO.setVrtotal(res.getFloat("valor_total"));
                    detalleFacturaVO.setCantidad(res.getInt("cantidad"));
                    detalleFacturaVO.setTipoRegistro(res.getString("tr"));
                    detalleFacturaVO.setNumero_factura(res.getString("numero"));
                    detalleFacturaVO.setCod_prestador(res.getString("cod_prestador"));
                    detalleFacturaVO.setId(res.getInt("id"));
                    detalleFacturaVO.setId_factura(res.getInt("id_factura"));
                    detalleFacturaVO.setFecha(res.getString("fecha"));

                    listDetalleFactura.add(detalleFacturaVO);

                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listDetalleFactura;
    }

    @Override
    public void guardarRipsConsulta(int id_factura,
            int id_paciente, String fecha, String autorizacion, int id_actividad,
            int finalidad, int causaex, String dxpal, String dx1, String dx2, String dx3,
            int tipodx, String valor, String valor_copago, String valor_total,
            int detalleadmision) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        String sqlAdiciona = "INSERT INTO tb_ripsac("
                + "id_factura, id_paciente, fecha, numero_orden,"
                + "id_actividad, id_finalidad, id_causaex, coddx_pal, coddx_rel1,"
                + "coddx_rel2, coddx_rel3, id_tipodx, valor, valor_copago, valor_total,id_detalle_admision)"
                + "VALUES (" + id_factura + "," + id_paciente + ",'" + fecha + "','" + autorizacion + "'," + id_actividad + ","
                + finalidad + "," + causaex + ",'" + dxpal + "','" + dx1 + "','" + dx2 + "','" + dx3 + "'," + tipodx + "," + valor + "," + valor_copago + "," + valor_total + "," + detalleadmision + ")";

        System.out.println("Guardar rip de Consulta: " + sqlAdiciona);

        Statement stmt = conn.createStatement();

        stmt.executeUpdate(sqlAdiciona);

        //stmt.execute();
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void actualizarRipsConsulta(int detalleadmision,
            int finalidad, String dxpal, String dx1, String dx2, String dx3,
            String autorizacion, int tipodx, int causaex) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();


        String sqlAdiciona = "UPDATE tb_ripsac"
                + " SET numero_orden='" + autorizacion + "', id_finalidad=" + finalidad + ", id_causaex=" + causaex + ","
                + "coddx_pal='" + dxpal + "', coddx_rel1='" + dx1 + "', coddx_rel2='" + dx2 + "', coddx_rel3='" + dx3 + "', id_tipodx=" + tipodx + ""
                + " WHERE id_detalle_admision=" + detalleadmision;

        System.out.println("actualizar rip de Consulta: " + sqlAdiciona);

        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);

        //stmt.execute();
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void actualizarRipsConsulta(int id_factura, int id_detalleadmision) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();


        String sqlAdiciona = "UPDATE tb_ripsac"
                + " SET id_factura=" + id_factura + " "
                + " WHERE id_detalle_admision=" + id_detalleadmision;
        System.out.println("actualizar rip de Consulta: " + sqlAdiciona);
        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);
        //stmt.execute();
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void guardarRipsProcedimiento(int id_factura,
            int id_paciente, String fecha,
            String autorizacion, int id_actividad, int ambito,
            int finalidad, int personal, String dxpal, String dxrel, String dxcom,
            int formaqxap, String valor, int detalleadmision) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        String sqlAdiciona = "INSERT INTO tb_ripsap(id_factura, id_paciente, fecha, numero_orden,"
                + "id_actividad, id_ambitopx, id_finalidad, id_personalatiende,"
                + "coddx_pal, coddx_rel, coddx_complicacion, id_formaactoqx, valor, id_detalle_admision)"
                + "VALUES (" + id_factura + ", " + id_paciente + ", '" + fecha + "', '" + autorizacion + "'," + id_actividad + ", " + ambito + ", " + finalidad + ", " + personal + ","
                + "'" + dxpal + "', '" + dxrel + "', '" + dxcom + "', " + formaqxap + ", " + valor + ", " + detalleadmision + ")";


        System.out.println("Guardar rip de Procedimientos: " + sqlAdiciona);

        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);

        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void actualizarRipsProcedimiento(String autorizacion,
            int ambito, int finalidad, int personal, String dxpal, String dxrel,
            String dxcom, int formaqxap,
            int detalleadmision) throws SQLException, NamingException {

        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();


        String sqlAdiciona = "UPDATE tb_ripsap"
                + " SET numero_orden='" + autorizacion + "',"
                + "id_ambitopx=" + ambito + ", id_finalidad=" + finalidad + ","
                + "id_personalatiende=" + personal + ", coddx_pal='" + dxpal + "',"
                + "coddx_rel='" + dxrel + "', coddx_complicacion='" + dxcom + "',"
                + "id_formaactoqx=" + formaqxap + " WHERE id_detalle_admision=" + detalleadmision;


        System.out.println("actualizar rip procedimiento: " + sqlAdiciona);


        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);



        //stmt.execute();
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void actualizarRipsProcedimiento(int id_factura, int id_detalleadmision) throws SQLException, NamingException {

        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        String sqlAdiciona = "UPDATE tb_ripsap"
                + " SET  id_factura=" + id_factura + " "
                + " WHERE id_detalle_admision=" + id_detalleadmision;
        System.out.println("actualizar rip procedimiento: " + sqlAdiciona);
        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);
        //stmt.execute();
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void guardarRipsOtroServicio(int id_factura,
            int id_paciente, String fecha, String autorizacion, int id_actividad,
            int id_tipo_servicio, int cantidad, String valor_unitario, String valor_total,
            int detalleadmision) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        String sqlAdiciona = "INSERT INTO tb_ripsat("
                + "id_factura, id_paciente, fecha, numero_orden,"
                + "id_actividad, id_tipo_servicio, cantidad, valor_unitario,"
                + "valor_total, id_detalle_admision)"
                + "VALUES (" + id_factura + "," + id_paciente + ",'" + fecha + "','" + autorizacion + "'," + id_actividad + ","
                + id_tipo_servicio + "," + cantidad + "," + id_tipo_servicio + "," + valor_total + "," + detalleadmision + ")";
        System.out.println("Guardar rip de otro servicio: " + sqlAdiciona);
        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);
        //stmt.execute();
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void actualizarRipsOtroServicio(String autorizacion,
            int id_tipo_servicio, int detalleadmision) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        String sqlAdiciona = "UPDATE tb_ripsat"
                + " SET  numero_orden='" + autorizacion + "',"
                + " id_tipo_servicio=" + id_tipo_servicio + " WHERE id_detalle_admision=" + detalleadmision;

        System.out.println("actualizar rip de otro servicio: " + sqlAdiciona);
        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);
        //stmt.execute();
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void actualizarRipsOtroServicio(int id_factura, int id_detalleadmision) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        String sqlAdiciona = "UPDATE tb_ripsat"
                + " SET  id_factura=" + id_factura + " "
                + " WHERE id_detalle_admision=" + id_detalleadmision;
        System.out.println("actualizar rip de otro servicio: " + sqlAdiciona);
        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);
        //stmt.execute();
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void guardarRipsMedicamento(int id_factura,
            int id_paciente, String fecha, String numero_orden, int id_actividad,
            int numero_unidades, String valor_unitario, String valor_total,
            int detalleadmision) throws SQLException, NamingException {

        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        String sqlAdiciona = "INSERT INTO tb_ripsam("
                + "id_factura, id_paciente, fecha, numero_orden,"
                + "id_actividad, numero_unidades, valor_unitario,"
                + "valor_total, id_detalle_admision)"
                + "VALUES (" + id_factura + "," + id_paciente + ",'" + fecha + "','" + numero_orden + "','" + id_actividad + "',"
                + numero_unidades + "," + valor_unitario + "," + valor_total + "," + detalleadmision + ")";



        System.out.println("Guardar rip de medicamento: " + sqlAdiciona);

        Statement stmt = conn.createStatement();

        stmt.executeUpdate(sqlAdiciona);

        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void actualizarRipsMedicamento(String numero_orden, int detalleadmision) throws SQLException, NamingException {

        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();


        String sqlAdiciona = "UPDATE tb_ripsam"
                + " SET  numero_orden='" + numero_orden + "' WHERE id_detalle_admision=" + detalleadmision;

        System.out.println("actualizar rip medicamentos: " + sqlAdiciona);

        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);

        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void actualizarRipsMedicamento(int id_factura, int id_detalleadmision) throws SQLException, NamingException {

        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();


        String sqlAdiciona = "UPDATE tb_ripsam"
                + " SET  id_factura=" + id_factura + " WHERE id_detalle_admision=" + id_detalleadmision;


        System.out.println("actualizar rip medicamentos factura: " + sqlAdiciona);

        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);

        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public int guardarRipsHospitalizacion(int id_factura, int idePac,
            int ideViaIng, String fecIng, String numero_orden, int ideCauExt, String diaPrinIng,
            String diaPrinEgr, String diaRelEgrUno, String diaRelEgrDos,
            String diaRelEgrTre, String diaComEgr, int ideEstSalEgr, String diaMueEgr,
            String fecEgr, int ideAdm) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        String sqlAdiciona = "INSERT INTO tb_ripsah(id_factura, "
                + "id_paciente, id_viaingreso, fecha_ingreso, numero_orden,"
                + "id_causaexterna, dxprincipal_ing, dxprincipal_egr, "
                + "dxrelacionado_egr_uno, dxrelacionado_egr_dos, "
                + "dxrelacionado_egr_tres, dxcomplicacion_egr, "
                + "id_estadosalida_egr, dxmuerte_egr, fecha_egr, "
                + "id_admision)"
                + " VALUES (?, ?, ?, '" + fecIng + "', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,'" + fecEgr + "', ?) RETURNING id;";

        PreparedStatement stmt = conn.prepareStatement(sqlAdiciona);
        stmt.setInt(1, id_factura);
        stmt.setInt(2, idePac);
        stmt.setInt(3, ideViaIng);
        stmt.setString(4, numero_orden);
        stmt.setInt(5, ideCauExt);
        stmt.setString(6, diaPrinIng);
        stmt.setString(7, diaPrinEgr);
        stmt.setString(8, diaRelEgrUno);
        stmt.setString(9, diaRelEgrDos);
        stmt.setString(10, diaRelEgrTre);
        stmt.setString(11, diaComEgr);
        stmt.setInt(12, ideEstSalEgr);
        stmt.setString(13, diaMueEgr);
        stmt.setInt(14, ideAdm);
        System.out.println("Sql RIPS HOSPITALIZACION:" + sqlAdiciona);

        ResultSet rs = stmt.executeQuery();
        rs.next();
        int resp = rs.getInt(1);
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
        return resp;
    }

    @Override
    public int actualizarRipsHospitalizacion(int ideViaIng, String fecIng, String numero_orden, int ideCauExt, String diaPrinIng,
            String diaPrinEgr, String diaRelEgrUno, String diaRelEgrDos,
            String diaRelEgrTre, String diaComEgr, int ideEstSalEgr, String diaMueEgr,
            String fecEgr, int ideAdm) throws SQLException, NamingException {

        int numUpd = 0;
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        PreparedStatement pstmt;

        String sq = "UPDATE tb_ripsah SET id_viaingreso=?, fecha_ingreso='" + fecIng + "', "
                + "numero_orden=?, id_causaexterna=?, dxprincipal_ing=?, dxprincipal_egr=?, "
                + "dxrelacionado_egr_uno=?, dxrelacionado_egr_dos=?, dxrelacionado_egr_tres=?, "
                + "dxcomplicacion_egr=?,id_estadosalida_egr=?, dxmuerte_egr=?, "
                + "fecha_egr='" + fecEgr + "' WHERE id_admision=?";
        pstmt = conn.prepareStatement(sq);
        pstmt.setInt(1, ideViaIng);
        pstmt.setString(2, numero_orden);
        pstmt.setInt(3, ideCauExt);
        pstmt.setString(4, diaPrinIng);
        pstmt.setString(5, diaPrinEgr);
        pstmt.setString(6, diaRelEgrUno);
        pstmt.setString(7, diaRelEgrDos);
        pstmt.setString(8, diaRelEgrTre);
        pstmt.setString(9, diaComEgr);
        pstmt.setInt(10, ideEstSalEgr);
        pstmt.setString(11, diaMueEgr);
        pstmt.setInt(12, ideAdm);
        numUpd = pstmt.executeUpdate();
        pstmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
        return numUpd;
    }

    @Override
    public void actualizarRipsHospitalizacion(int id_factura, int id_admision) throws SQLException, NamingException {

        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();


        String sqlAdiciona = "UPDATE tb_ripsah"
                + " SET  id_factura=" + id_factura + " WHERE id_admision=" + id_admision;


        System.out.println("actualizar rip hospitalizacion factura: " + sqlAdiciona);

        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);

        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public int guardarRipsUrgencia(int id_factura, int idePac,
            String fecIng, String numeroOrden, int ideCauExt, String diaPrinEgr,
            String diaRelEgrUno, String diaRelEgrDos,
            String diaRelEgrTre, int ideDestSalEgr, int ideEstSalEgr, String diaMueEgr,
            String fecEgr, int ideAdm) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        String sqlAdiciona = "INSERT INTO tb_ripsau(id_factura, "
                + "id_paciente, fecha_ingreso, numero_orden, "
                + "id_causaexterna, dxprincipal_egr, "
                + "dxrelacionado_egr_uno, dxrelacionado_egr_dos, "
                + "dxrelacionado_egr_tres, id_destinosalida_egr, "
                + "id_estadosalida_egr, dxmuerte_egr, fecha_egr, "
                + "id_admision)"
                + " VALUES (?, ?,'" + fecIng + "', ?, ?, ?, ?, ?, ?, ?, ?, ?,'" + fecEgr + "', ?) RETURNING id;";

        PreparedStatement stmt = conn.prepareStatement(sqlAdiciona);
        stmt.setInt(1, id_factura);
        stmt.setInt(2, idePac);
        stmt.setString(3, numeroOrden);
        stmt.setInt(4, ideCauExt);
        stmt.setString(5, diaPrinEgr);
        stmt.setString(6, diaRelEgrUno);
        stmt.setString(7, diaRelEgrDos);
        stmt.setString(8, diaRelEgrTre);
        stmt.setInt(9, ideDestSalEgr);
        stmt.setInt(10, ideEstSalEgr);
        stmt.setString(11, diaMueEgr);
        stmt.setInt(12, ideAdm);
        ResultSet rs = stmt.executeQuery();

        rs.next();
        int resp = rs.getInt(1);
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
        return resp;
    }

    @Override
    public int actualizarRipsUrgencia(String fecha_ingreso, String numero_orden,
            int id_causaexterna, String dxprincipal_egr, String dxrelacionado_egr_uno,
            String dxrelacionado_egr_dos, String dxrelacionado_egr_tres,
            int id_destinosalida_egr, int id_estadosalida_egr,
            String dxmuerte_egr, String fecha_egr, int id_admision) throws SQLException, NamingException {

        int numUpd = 0;
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        PreparedStatement pstmt;

        String sq = "UPDATE tb_ripsau SET  fecha_ingreso='" + fecha_ingreso + "', numero_orden=?,id_causaexterna=?, dxprincipal_egr=?, dxrelacionado_egr_uno=?, "
                + " dxrelacionado_egr_dos=?,dxrelacionado_egr_tres=?,id_destinosalida_egr=?,id_estadosalida_egr=?,dxmuerte_egr=?, "
                + " fecha_egr='" + fecha_egr + "' WHERE id_admision=?";

        pstmt = conn.prepareStatement(sq);
        pstmt.setString(1, numero_orden);
        pstmt.setInt(2, id_causaexterna);
        pstmt.setString(3, dxprincipal_egr);
        pstmt.setString(4, dxrelacionado_egr_uno);
        pstmt.setString(5, dxrelacionado_egr_dos);
        pstmt.setString(6, dxrelacionado_egr_tres);
        pstmt.setInt(7, id_destinosalida_egr);
        pstmt.setInt(8, id_estadosalida_egr);
        pstmt.setString(9, dxmuerte_egr);
        pstmt.setInt(10, id_admision);
        numUpd = pstmt.executeUpdate();
        pstmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
        return numUpd;
    }

    @Override
    public void actualizarRipsUrgencia(int id_factura, int id_admision) throws SQLException, NamingException {

        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        String sqlAdiciona = "UPDATE tb_ripsau"
                + " SET  id_factura='" + id_factura + "' WHERE id_admision=" + id_admision;


        System.out.println("actualizar rip urgencia factura: " + sqlAdiciona);

        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);

        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void guardarRipsRecienNacido(String idfactura, int id_pacientean, String edadges, String controlpre, String sexo, String peso, String dxrn, String dxmu, String nom, int id_detalle_admision) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        String sqlAdiciona = "";

        if (nom.equals("")) {
            nom = "RECIEN NACIDO";
        }

        sqlAdiciona = "INSERT INTO tb_ripsan(id_paciente, id_factura,"
                + " id_detalle_admision)"
                + "VALUES (" + id_pacientean + ", '" + idfactura + "', " + id_detalle_admision + ")";


        System.out.println("Sql RIPS RN:" + sqlAdiciona);

        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void guardarRipsRecienNacido(String idfactura, int id_pacientean, String fecnac, String edadges, String controlpre, String sexo, String peso, String dxrn, String dxmu, String fecmu, String nom, int id_detalle_admision) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        String sqlAdiciona = "";

        if (nom.equals("")) {
            nom = "RECIEN NACIDO";
        }
        
        if (edadges.equals("")) {
            edadges = "0";
        }
         if (peso.equals("")) {
             peso = "0";
        }
        

        if (fecmu.equals("") && fecnac.equals("")) {
            sqlAdiciona = "INSERT INTO tb_ripsan(id_paciente, id_factura, "
                    + "edad_gestacion, control_prenatal, id_sexo, peso, coddx_rn, nombre_completo, id_detalle_admision)"
                    + "VALUES (" + id_pacientean + ", " + idfactura + ", "
                    + "'" + edadges + "', '" + controlpre + "', '" + sexo + "', '" + peso + "', '" + dxrn + "', '" + nom + "', " + id_detalle_admision + ")";
        } else {

            if (!fecmu.equals("") && !fecnac.equals("")) {

                sqlAdiciona = "INSERT INTO tb_ripsan(id_paciente, id_factura, fecha_nacimiento,"
                        + "edad_gestacion, control_prenatal, id_sexo, peso, coddx_rn, coddx_muerte,fecha_muerte,nombre_completo, id_detalle_admision)"
                        + "VALUES (" + id_pacientean + ", " + idfactura + ", '" + fecnac + "',"
                        + "'" + edadges + "', '" + controlpre + "', '" + sexo + "', '" + peso + "', '" + dxrn + "', '" + dxmu + "', '" + fecmu + "', '" + nom + "', " + id_detalle_admision + ")";

            } else {

                if (fecmu.equals("")) {
                    sqlAdiciona = "INSERT INTO tb_ripsan(id_paciente, id_factura, fecha_nacimiento,"
                            + "edad_gestacion, control_prenatal, id_sexo, peso, coddx_rn, nombre_completo, id_detalle_admision)"
                            + "VALUES (" + id_pacientean + ", " + idfactura + ", '" + fecnac + "',"
                            + "'" + edadges + "', '" + controlpre + "', '" + sexo + "', '" + peso + "', '" + dxrn + "', '" + nom + "', " + id_detalle_admision + ")";
                } else {

                    sqlAdiciona = "INSERT INTO tb_ripsan(id_paciente, id_factura, "
                            + "edad_gestacion, control_prenatal, id_sexo, peso, coddx_rn, coddx_muerte,fecha_muerte,nombre_completo, id_detalle_admision)"
                            + "VALUES (" + id_pacientean + ", " + idfactura + ", "
                            + "'" + edadges + "', '" + controlpre + "', '" + sexo + "', '" + peso + "', '" + dxrn + "', '" + dxmu + "', '" + fecmu + "', '" + nom + "', " + id_detalle_admision + ")";
                }

            }

        }

        System.out.println("Sql RIPS RN:" + sqlAdiciona);

        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public List<PlanoANVO> listaRecienNacido(int idfactura) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<PlanoANVO> listRn = new ArrayList<PlanoANVO>();

        String condicion = "";


        String sql = "SELECT "
                + "tb_ripsan.nombre_completo,"
                + "tb_ripsan.fecha_nacimiento,"
                + "tb_sexo.descripcion sexo,"
                + "tb_ripsan.peso "
                + "FROM "
                + "public.tb_ripsan, "
                + "public.tb_sexo"
                + " WHERE "
                + "tb_ripsan.id_sexo = tb_sexo.id AND tb_ripsan.id_factura=" + idfactura;

        System.out.println("Sql buscar RN: " + sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    PlanoANVO rnVO = new PlanoANVO();
                    rnVO.setNom(res.getString("nombre_completo"));
                    rnVO.setFechaNacimiento(res.getString("fecha_nacimiento"));
                    rnVO.setSexo(res.getString("sexo"));
                    rnVO.setPeso(res.getString("peso"));
                    listRn.add(rnVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listRn;
    }

    @Override
    public void actualizarRipsRecienNacido(String fecnac, String edadges, String controlpre, String sexo, String peso, String dxrn, String dxmu, String fecmu, String nom, int id_detalle_admision) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        String sqlAdiciona = "";

        if (fecmu.equals("")) {


            sqlAdiciona = "UPDATE tb_ripsan"
                    + " SET  fecha_nacimiento='" + fecnac + "', edad_gestacion='" + edadges + "',"
                    + " control_prenatal='" + controlpre + "', id_sexo='" + sexo + "',"
                    + " peso='" + peso + "', coddx_rn='" + dxrn + "', coddx_muerte='" + dxmu + "',"
                    + " nombre_completo='" + nom + "' WHERE id_detalle_admision=" + id_detalle_admision;
        } else {


            sqlAdiciona = "UPDATE tb_ripsan"
                    + " SET  fecha_nacimiento='" + fecnac + "', edad_gestacion='" + edadges + "',"
                    + " control_prenatal='" + controlpre + "', id_sexo='" + sexo + "',"
                    + " peso='" + peso + "', coddx_rn='" + dxrn + "', coddx_muerte='" + dxmu + "',"
                    + " fecha_muerte='" + fecmu + "', nombre_completo='" + nom + "' WHERE id_detalle_admision=" + id_detalle_admision;

        }

        System.out.println("actualizar rip rn: " + sqlAdiciona);
        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);

        //stmt.execute();
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void actualizarRipsRecienNacido(int id_factura, int id_detalleadmision) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        String sqlAdiciona = "UPDATE tb_ripsan"
                + " SET  id_factura=" + id_factura + " WHERE id_detalle_admision=" + id_detalleadmision;


        System.out.println("actualizar rip recien nacidos factura: " + sqlAdiciona);

        Statement stmt = conn.createStatement();
        stmt.executeUpdate(sqlAdiciona);

        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public PlanoAHVO getRipsAH(int idAdmision) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        String condicion = " WHERE public.tb_ripsah.id_admision=" + idAdmision;
        String sql = "SELECT "
                + "public.tb_ripsah.id, "
                + "public.tb_ripsah.id_factura, "
                + "public.tb_ripsah.id_paciente, "
                + "public.tb_ripsah.id_viaingreso, "
                + "public.tb_ripsah.numero_orden, "
                + "public.tb_ripsah.fecha_ingreso, "
                + "public.tb_ripsah.id_causaexterna, "
                + "public.tb_ripsah.dxprincipal_ing, "
                + "public.tb_ripsah.dxprincipal_egr, "
                + "public.tb_ripsah.dxrelacionado_egr_uno, "
                + "public.tb_ripsah.dxrelacionado_egr_dos, "
                + "public.tb_ripsah.dxrelacionado_egr_tres, "
                + "public.tb_ripsah.dxcomplicacion_egr, "
                + "public.tb_ripsah.id_estadosalida_egr, "
                + "public.tb_ripsah.dxmuerte_egr, "
                + "public.tb_ripsah.fecha_egr, "
                + "public.tb_ripsah.id_admision "
                + " FROM public.tb_ripsah " + condicion;

        System.out.println("lista AH: " + sql);
        PreparedStatement stmt = conn.prepareStatement(sql);
        PlanoAHVO planoAHVO = new PlanoAHVO();

        try {
            ResultSet res = stmt.executeQuery();
            try {

                if (res.next()) {
                    planoAHVO.setId(res.getString("id"));
                    planoAHVO.setId_factura(res.getString("id_factura"));
                    planoAHVO.setIdPaciente(res.getString("id_paciente"));
                    planoAHVO.setViaIngreso(res.getString("id_viaingreso"));
                    //planoAHVO.setFechaIngreso(res.getString("fecha_ingreso"));                    
                    String[] fecHora = res.getString("fecha_ingreso").split(" ");
                    planoAHVO.setFechaIngreso(fecHora[0]);
                    planoAHVO.setHoraIngreso(fecHora[1]);
                    planoAHVO.setNumOrden(res.getString("numero_orden"));
                    planoAHVO.setCausaEx(res.getString("id_causaexterna"));
                    planoAHVO.setDxIngreso(res.getString("dxprincipal_ing"));
                    planoAHVO.setDxEgreso(res.getString("dxprincipal_egr"));
                    planoAHVO.setDxEgreso1(res.getString("dxrelacionado_egr_uno"));
                    planoAHVO.setDxEgreso2(res.getString("dxrelacionado_egr_dos"));
                    planoAHVO.setDxEgreso3(res.getString("dxrelacionado_egr_tres"));
                    planoAHVO.setDxComplic(res.getString("dxcomplicacion_egr"));
                    planoAHVO.setEstadoSalida(res.getString("id_estadosalida_egr"));
                    planoAHVO.setDxMuerte(res.getString("dxmuerte_egr"));
                    planoAHVO.setFechaSalida(res.getString("fecha_egr"));
                    String[] fecHoraEgre = res.getString("fecha_egr").split(" ");
                    planoAHVO.setFechaSalida(fecHoraEgre[0]);
                    planoAHVO.setHoraSalida(fecHoraEgre[1]);
                    planoAHVO.setIdResponsable(res.getString("id_admision"));
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return planoAHVO;
    }

    @Override
    public CabRipVO getCabRip(int idfactura) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        String sql = "SELECT tb_factura.numero, "
                + "tb_prestador.codigo, "
                + "tb_factura.id_paciente"
                + " FROM "
                + "public.tb_factura, "
                + "public.tb_prestador "
                + "WHERE "
                + "tb_factura.id =" + idfactura;

        PreparedStatement stmt = conn.prepareStatement(sql);

        ResultSet res = stmt.executeQuery();
        CabRipVO cabRipVO = new CabRipVO();
        if (res.next()) {
            cabRipVO.setCodPrestador(res.getString("codigo"));
            cabRipVO.setIdPaciente(res.getInt("id_paciente"));
            cabRipVO.setNumFactura(res.getString("numero"));
        }
        res.close();
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
        return cabRipVO;
    }


    /*
     * @Override public void guardarRecienNacido(int idfactura, int
     * id_pacienteap, String fecnac, String edadges, String controlpre, String
     * sexo, String peso, String dxrn, String dxmu, String fecmu, String nom)
     * throws SQLException, NamingException { ConexionDb con = new ConexionDb();
     * Connection conn; conn = con.traerConexion();
     *
     * String sqlAdiciona = "";
     *
     * if (nom.equals("")) { nom = "RECIEN NACIDO"; }
     *
     * if (fecmu.equals("")) { sqlAdiciona = "INSERT INTO tb_ripsan(id_paciente,
     * id_factura, fecha_nacimiento," + "edad_gestacion, control_prenatal,
     * id_sexo, peso, coddx_rn, coddx_muerte, nombre_completo)" + "VALUES (" +
     * id_pacienteap + ", " + idfactura + ", '" + fecnac + "'," + "" + edadges +
     * ", " + controlpre + ", " + sexo + ", " + peso + ", '" + dxrn + "', '" +
     * dxmu + "', '" + nom + "');"; } else { sqlAdiciona = "INSERT INTO
     * tb_ripsan(id_paciente, id_factura, fecha_nacimiento," + "edad_gestacion,
     * control_prenatal, id_sexo, peso, coddx_rn,
     * coddx_muerte,fecha_muerte,nombre_completo)" + "VALUES (" + id_pacienteap
     * + ", " + idfactura + ", '" + fecnac + "'," + "" + edadges + ", " +
     * controlpre + ", " + sexo + ", " + peso + ", '" + dxrn + "', '" + dxmu +
     * "', '" + fecmu + "', '" + nom + "');"; }
     *
     * System.out.println("Sql RN:" + sqlAdiciona);
     *
     *
     * String sqlAdiciona ="INSERT INTO tb_ripsan(id_paciente, id_factura,
     * codigo_prestador, fecha_nacimiento, " + "edad_gestacion,
     * control_prenatal, id_sexo, peso, coddx_rn, coddx_muerte,fecha_muerte)" +
     * " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; System.out.println("Guardar
     * RN: "+sqlAdiciona); PreparedStatement stmt =
     * conn.prepareStatement(sqlAdiciona); SimpleDateFormat dateFormat = new
     * SimpleDateFormat("dd/MM/yyyy hh:mm"); Timestamp timestamp = null; try {
     * Date date = dateFormat.parse(fecnac); timestamp = new
     * java.sql.Timestamp(date.getTime()); } catch (ParseException ex) {
     * Logger.getLogger(RipsDAO.class.getName()).log(Level.SEVERE, null, ex); }
     * System.out.println("Fec nac:"+timestamp); stmt.setInt(1,id_pacienteap);
     * stmt.setInt(2,idfactura); stmt.setString(3,codprestadorap);
     * stmt.setTimestamp(4,timestamp); stmt.setInt(5,Integer.parseInt(edadges));
     * stmt.setInt(6,Integer.parseInt(controlpre));
     * stmt.setInt(7,Integer.parseInt(sexo));
     * stmt.setInt(8,Integer.parseInt(peso)); stmt.setString(9,dxrn);
     * stmt.setString(10,dxmu); stmt.setString(11,fecmu); stmt.execute();
     * stmt.close();
     *
     *
     * Statement stmt = conn.createStatement(); stmt.executeUpdate(sqlAdiciona);
     * stmt.close(); if (!conn.isClosed()) { conn.close(); }
    }
     */
    @Override
    public PlanoAUVO getRipsAU(int idAdmision) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        String condicion = " WHERE public.tb_ripsau.id_admision=" + idAdmision;
        String sql = "SELECT "
                + "public.tb_ripsau.id,"
                + "public.tb_ripsau.id_factura,"
                + "public.tb_ripsau.id_paciente,"
                + "public.tb_ripsau.fecha_ingreso,"
                + "public.tb_ripsau.numero_orden,"
                + "public.tb_ripsau.id_causaexterna,"
                + "public.tb_ripsau.dxprincipal_egr,"
                + "public.tb_ripsau.dxrelacionado_egr_uno,"
                + "public.tb_ripsau.dxrelacionado_egr_dos,"
                + "public.tb_ripsau.dxrelacionado_egr_tres,"
                + "public.tb_ripsau.id_destinosalida_egr,"
                + "public.tb_ripsau.id_estadosalida_egr,"
                + "public.tb_ripsau.dxmuerte_egr,"
                + "public.tb_ripsau.fecha_egr,"
                + "public.tb_ripsau.id_admision"
                + " FROM public.tb_ripsau " + condicion;

        System.out.println("lista AU: " + sql);

        PreparedStatement stmt = conn.prepareStatement(sql);

        PlanoAUVO planoAUVO = new PlanoAUVO();

        try {
            ResultSet res = stmt.executeQuery();
            try {
                if (res.next()) {
                    planoAUVO.setId(res.getInt("id"));
                    planoAUVO.setId_factura(res.getString("id_factura"));
                    planoAUVO.setIdPaciente(res.getString("id_paciente"));
                    planoAUVO.setFechaIngresoCom(res.getString("fecha_ingreso"));
                    String[] fecHora = res.getString("fecha_ingreso").split(" ");
                    planoAUVO.setFechaIngreso(fecHora[0]);
                    planoAUVO.setHoraIngreso(fecHora[1]);
                    planoAUVO.setNumOrden(res.getString("numero_orden"));
                    planoAUVO.setCausaEx(res.getString("id_causaexterna"));
                    planoAUVO.setDxPrinEgreso(res.getString("dxprincipal_egr"));
                    planoAUVO.setDxRelEgresoUno(res.getString("dxrelacionado_egr_uno"));
                    planoAUVO.setDxRelEgresoDos(res.getString("dxrelacionado_egr_dos"));
                    planoAUVO.setDxRelEgresoTres(res.getString("dxrelacionado_egr_tres"));
                    planoAUVO.setDestinoSalEgreso(res.getString("id_destinosalida_egr"));
                    planoAUVO.setEstadoSalEgreso(res.getString("id_estadosalida_egr"));
                    planoAUVO.setDxMuerteEgreso(res.getString("dxmuerte_egr"));
                    planoAUVO.setFechaEgresoCom(res.getString("fecha_egr"));
                    String[] fecHoraEgre = res.getString("fecha_egr").split(" ");
                    planoAUVO.setFechaEgreso(fecHoraEgre[0]);
                    planoAUVO.setHoraEgreso(fecHoraEgre[1]);
                    planoAUVO.setIdAdmision(res.getString("id_admision"));
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return planoAUVO;
    }
}